/* 
 * File:   Jugador.h
 * Author: max
 *
 * Created on November 17, 2012, 4:01 PM
 */

#ifndef JUGADOR_H
#define	JUGADOR_H

#include <string>
#include "ISerializable.h"
#include "Excepcion.h"

using namespace std;
using namespace TP;
using namespace TP::Serializacion;

typedef int puntaje_t;

namespace TP { namespace Juego {

class Jugador : public ISerializable {
public:
    
    Jugador();
    
    Jugador(const string& pNobmre);

    virtual ~Jugador();
    
    const string& getNombre();
    
    virtual string aXML();
    
    virtual string aXML(const string& pPath);
    
    virtual void parseXML (const string& pDescriptor);
    
    virtual TiXmlElement* aElementoXML ();
    
    virtual void deElementoXML (TiXmlElement* pElemento); 
    
    bool operator== (const Jugador& pJugador);

    static Jugador* crearDeXML (const string& pDescriptor) throw (Excepcion&);
    
    // Setea un nuevo puntaje
    void setPuntaje(const puntaje_t &nuevoPuntaje);
    
    // Suma puntos al puntaje actual.
    void sumarPuntos(const puntaje_t &puntos);
    
    // Resta puntos al puntaje actual.
    void restarPuntos(const puntaje_t &puntos);
    
    // Retorna los punto ascumulados actualmente.
    puntaje_t getPuntos() const;
    
private:
    string _nombre;
    puntaje_t _puntaje;

};

}}

#endif	/* JUGADOR_H */
